/*
 * Powered By XY
 * Since 2020
 */

package com.xy.biz.base.dao;

import java.util.Collection;
import java.util.List;

import com.xy.biz.base.domain.po.GoodsBatchPO;
import com.xy.biz.base.domain.query.GoodsBatchQuery;

/**
 *
 *
 * @author zgy
 * @date 2021-9-22
 */
public interface GoodsBatchDao {

    /**
     * 保存
     *
     * @param goodsBatchPO
     */
    int saveGoodsBatch(GoodsBatchPO goodsBatchPO);

    /**
     * 保存多个
     *
     * @param collection
     */
    int saveAllGoodsBatch(Collection<GoodsBatchPO> collection);

    /**
     * 更新
     *
     * @param goodsBatchPO
     */
    int updateGoodsBatch(GoodsBatchPO goodsBatchPO);

    /**
     * 删除
     *
     * @param goodsBatchId
     */
    int deleteGoodsBatch(Long goodsBatchId);

    /**
     * 查找一个
     *
     * @param goodsBatchId
     * @return
     */
    GoodsBatchPO getGoodsBatch(Long goodsBatchId);

    /**
     * 查找多条
     *
     * @param collection
     * @return
     */
    List<GoodsBatchPO> listGoodsBatchById(Collection<Long> collection);

    /**
     * 根据货品（货品Id或货号）来查询
     *
     * @param query
     * @return
     */
    List<GoodsBatchPO> listGoodsBatchByGoods(GoodsBatchQuery query);

    /**
     * 根据货品（货品Id或货号）和批号的组合来查询
     *
     * @param collection
     * @return
     */
    List<GoodsBatchPO> listGoodsBatchByGoodsAndBatch(Collection<GoodsBatchQuery> collection);

    /**
     * 条件查找多条
     *
     * @param query 查找条件
     * @return
     */
    List<GoodsBatchPO> listGoodsBatch(GoodsBatchQuery query);

    /**
     * 条件统计个数
     *
     * @param query 查找条件
     * @return
     */
    int countGoodsBatch(GoodsBatchQuery query);

}
